Cloud Workflowsでget_type関数を使ってみる
はじめに
データアナリティクス事業本部のkobayashiです。
GoogleCloudのWorkflowsで引数の型を判定する関数が追加されていたので試してみました。
Workflowsで引数の型を判定する関数(get_type)
タイトルの通りですが、Workflows中で引数の型を判定する関数でget_type(arg)
で使用すると戻り値でboolean,bytes,double,integer,list,map,string,null
のいずれかを返す関数になります。
では実際にWorkflowを作って試してみたいと思います。Workflowsではyaml定義を使ってWorkflowを作成できるので以下のyamlを使います。
main: steps: - assign_value: assign: - str_val: "str_val" - int_val: 999 - double_val: 999.999 - bool_val: True - list_val: [ "apple","orange","banana" ] - map_val: { "apple": 10,"orange": 20,"banana": 30 } - null_val: - assign_value_2: assign: - str_int_val: ${string(int_val)} - str_double_val: ${string(double_val)} - str_bool_val: ${string(bool_val)} - int_double_val: ${int(double_val)} - double_int_val: ${double(int_val)} - logging: call: sys.log args: text: ${"str_val:" + get_type(str_val) + ", int_val:" + get_type(int_val) + ", double_val:" + get_type(double_val) + ", bool_val:" + get_type(bool_val) + ", list_val:" + get_type(list_val) + ", map_val:" + get_type(map_val)+ ", null_val:" + get_type(null_val) } severity: INFO - logging_2: call: sys.log args: text: ${"str_int_val:" + get_type(str_int_val) + ", str_double_val:" + get_type(str_double_val) + ", str_bool_val:" + get_type(str_bool_val) + ", int_double_val:" + get_type(int_double_val) + ", double_int_val:" + get_type(double_int_val) } severity: INFO
ステップで行っていることを簡単に説明します。
- assign_valueステップ
- string型、integer型、double型、bool型、list型、map型、null型の変数を定義する
- assign_value_2ステップ
string()
関数、int()
関数、double()
関数を使ってassign_valueステップで定義した変数の型変換を行う
- loggingステップ
- assign_valueステップで定義した変数の型をCloud Loggingに出力する
- logging_2ステップ
- assign_value_2ステップで型変換した変数の型をCloud Loggingに出力する
ではこのyamlを使ってWorkflowを作成して実行結果を確認してみます。
$ gcloud workflows deploy wf-get_type --source=wf-get_type.yml --service-account [email protected] --location asia-northeast1 $ gcloud workflows run wf-get_type --location asia-northeast1
実行結果をCloud Loggingで確認してみます。
2023-02-14 13:37:22.745 JST str_val:string, int_val:integer, double_val:double, bool_val:boolean, list_val:list, map_val:map, null_val:null 2023-02-14 13:37:23.007 JST str_int_val:string, str_double_val:string, str_bool_val:string, int_double_val:integer, double_int_val:double
loggingステップではassign_valueステップで定義した変数の型が意図した通りに出力されていますし、logging_2ステップではassign_value_2ステップで型変換を行った後のデータ型が取得できていることが確認できました。
まとめ
GoogleCloudのWorkflowsで引数の型を判定する関数get_type
を使って定義した変数の型、型変換を行った後のデータ型が取得できることが確認できました。get_type
関数の使いみちとしてはswitchステップのconditionにてデータ型により処理を変更するといったことがまずは考えられます。なお、get_type
関数でfunctionやsubworkflowを与えた場合はエラーとなるのでその点は注意が必要です。
最後まで読んで頂いてありがとうございました。